AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.02
조회수
8
버전
v1

개요

(R-squared, 결정계수)는 통계학 및 기계학습에서 회귀 모델의 성능을가하는 대표 지표 중 하나입니다. R² 모델이 종속 변수(dependent variable)의 분산 중 얼마나 많은 부분을 설명할 수 있는지를 나타내는 값으로, 일반적으로 0에서 1 사이의 값을 가집니다. 이 값이 1에 가까울수록 모델이 데이터의 변동성을 잘 설명하고 있음을 의미하며, 0에 가까울수록 설명력이 낮음을 나타냅니다.

R²는 특히 선형 회귀(Linear Regression) 모델의 평가에서 널리 사용되며, 모델의 예측 정확도를 직관적으로 해석할 수 있게 해줍니다. 그러나 R²만으로 모델의 전반적인 성능을 판단하기에는 한계가 있으므로, 다른 평가 지표와 함께 종합적으로 활용하는 것이 바람직합니다.


R²의 정의와 계산 방식

수학적 정의

R²는 다음과 같은 공식으로 계산됩니다:

[ R^2 = 1 - \frac{\text{잔차제곱합 (RSS)}}{\text{총제곱합 (TSS)}} ]

여기서: - RSS(Residual Sum of Squares):
[ \text{RSS} = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 ] 실제 관측값 (y_i)와 모델의 예측값 (\hat{y}_i)의 차이(잔차)를 제곱한 후 모두 더한 값입니다.

  • TSS(Total Sum of Squares):
    [ \text{TSS} = \sum_{i=1}^{n} (y_i - \bar{y})^2 ] 각 관측값과 종속 변수의 평균 (\bar{y})의 차이를 제곱한 후 모두 더한 값입니다.

해석

  • (R^2 = 1): 모델이 모든 변동성을 완벽히 설명함 (잔차 없음).
  • (R^2 = 0): 모델이 평균값 기준으로 더 나은 설명력을 제공하지 않음.
  • (R^2 < 0): 모델의 성능이 평균값 예측보다 나쁨 (과적합 또는 잘못된 모델일 수 있음).

R²의 특성과 장단점

장점

  • 직관적 해석: "모델이 데이터의 몇 %를 설명한다"는 식으로 쉽게 이해할 수 있음.
  • 모델 비교 용이: 동일한 데이터셋에서 서로 다른 회귀 모델을 비교할 때 유용함.
  • 스케일 불변성: 종속 변수의 단위에 영향을 받지 않음.

단점

  • 항상 증가하는 경향: 독립 변수를 추가할수록 R²는 감소하지 않고 항상 같거나 증가함 (과적합 유도 가능).
  • 비선형 모델에 대한 제한: 비선형 회귀 모델에 적용할 경우 해석이 왜곡될 수 있음.
  • 이상치에 민감: 데이터에 이상치(outlier)가 많을 경우 R² 값이 왜곡될 수 있음.

수정된 R² (Adjusted R²)

R²의 단점을 보완하기 위해 고안된 지표로, 수정된 R²(Adjusted R²)가 있습니다. 이는 변수의 수를 고려하여 패널티를 부여함으로써 모델의 복잡성을 반영합니다.

[ \text{Adjusted } R^2 = 1 - \left( \frac{(1 - R^2)(n - 1)}{n - k - 1} \right) ]

여기서: - (n): 샘플 수 - (k): 독립 변수의 수

수정된 R²는 변수를 추가해도 모델의 설명력 향상이 충분하지 않으면 감소할 수 있으므로, 변수 선택(feature selection) 시 유용합니다.


R²와 다른 평가 지표의 비교

지표 설명 장점 단점
설명된 분산의 비율 해석 쉬움, 표준화됨 변수 추가 시 증가, 비음수 보장 안 됨
RMSE 예측 오차의 제곱근 절대 오차 크기 제공 스케일에 의존
MAE 절대 오차의 평균 이상치에 강함 비선형 반영 부족
Adjusted R² 변수 수 보정된 R² 과적합 방지 여전히 회귀 전용

활용 예시 (Python 코드)

from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import numpy as np

# 샘플 데이터 생성
X = np.random.rand(100, 3)
y = 3 * X[:, 0] + 2 * X[:, 1] - X[:, 2] + np.random.randn(100) * 0.1

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)

# 예측 및 평가
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)

print(f"R² 점수: {r2:.4f}")


참고 자료 및 관련 문서

  • Scikit-learn: r2_score 문서
  • James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.
  • Kutner, M. H., et al. (2005). Applied Linear Statistical Models. McGraw-Hill.

관련 개념

R²는 단독으로 사용하기보다는, 모델의 전반적인 성능을 평가하기 위해 다양한 지표와 함께 종합적으로 활용되어야 합니다. 특히 실제 응용에서는 도메인 지식과 데이터의 특성을 고려한 평가가 중요합니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?